﻿import SuperMap from '../SuperMap';

/**
 * @class SuperMap.Credential
 * @classdesc SuperMap的安全证书类，其中包括token等安全验证信息。<br>
 * 需要使用用户名和密码在："http://localhost:8090/iserver/services/security/tokens"下申请value <br>
 * 获得形如："2OMwGmcNlrP2ixqv1Mk4BuQMybOGfLOrljruX6VcYMDQKc58Sl9nMHsqQaqeBx44jRvKSjkmpZKK1L596y7skQ.."的value<br>
 * 目前支持的功能包括：地图服务、专题图、量算、查询、公交换乘、空间分析、网络分析，不支持轮询功能。
 * @param value - {string}  访问受安全限制的服务时用于通过安全认证的验证信息。
 * @param name - {string}  验证信息前缀，name=value部分的name部分，默认为“token”。
 * @example
 * var pixcel = new SuperMap.Credential("valueString","token");
 * pixcel.destroy();
 */
export default class Credential {
    /**
     * @member SuperMap.Bounds.prototype.value -{string}
     * @description 访问受安全限制的服务时用于通过安全认证的验证信息。
     */
    value = "";

    /**
     * @member SuperMap.Bounds.prototype.name -{string}
     * @description 验证信息前缀，name=value部分的name部分，默认为“token”。
     */
    name = "token";
    /**
     * @member SuperMap.Credential.CREDENTIAL -{SuperMap.Credential}
     * @description 这个对象保存一个安全类的实例，在服务端需要安全验证的时候必须进行设置。
     * @constant
     * @example
     * 代码实例:
     *  // 当iServer启用服务安全的时候，下边的代码是必须的。安全证书类能够接收一个value和一个name参数。
     *  var value = "(以iServer为例，这里是申请的token值)";
     *  var name = "token";
     *  // 默认name参数为token，所以当使用iServer服务的时候可以不进行设置。
     *  SuperMap.Credential.CREDENTIAL = new SuperMap.Credential(value, name);
     *
     */

    static CREDENTIAL = null;

    constructor(value, name) {
        this.value = value ? value : this.value;
        this.name = name ? name : this.name;
    }

    /**
     * @function SuperMap.Credential.prototype.getUrlParameters
     * @example
     * var credential = new SuperMap.Credential("valueString","token");
     * //这里 str = "token=valueString";
     * var str = credential.getUrlParameters();
     * @returns {string} 返回安全信息组成的url片段。
     */
    getUrlParameters() {
        //当需要其他安全信息的时候，则需要return this.name + "=" + this.value + "&" + "...";的形式添加。
        return this.name + "=" + this.value;
    }


    /**
     * @function SuperMap.Bounds.prototype.getValue
     * @description 获取value
     * @example
     * var credential = new SuperMap.Credential("2OMwGmcNlrP2ixqv1Mk4BuQMybOGfLOrljruX6VcYMDQKc58Sl9nMHsqQaqeBx44jRvKSjkmpZKK1L596y7skQ..","token");
     * //这里 str = "2OMwGmcNlrP2ixqv1Mk4BuQMybOGfLOrljruX6VcYMDQKc58Sl9nMHsqQaqeBx44jRvKSjkmpZKK1L596y7skQ..";
     * var str = credential.getValue();
     * @returns {string} 返回value字符串，在iServer服务下该value值即为token值。
     */
    getValue() {
        return this.value;
    }

    /**
     *
     * @function SuperMap.Credential.prototype.destroy
     * @description 销毁此对象。销毁后此对象的所有属性为null，而不是初始值。
     * @example
     * var credential = new SuperMap.Credential("valueString","token");
     * credential.destroy();
     */
    destroy() {
        this.value = null;
        this.name = null;
    }


    CLASS_NAME = "SuperMap.Credential"
}
SuperMap.Credential = Credential;
